import { uploadFile as apiUploadFile } from '@/api/modules/upload';

/**
 * 上传文件
 * @param file 要上传的文件
 * @param options 上传选项
 * @returns 上传结果的Promise
 */
export async function uploadFile(
  file: File,
  options?: {
    onProgress?: (progress: number) => void;
    fileType?: 'avatar' | 'document' | 'image' | string; // 文件类型
    maxWidth?: number; // 图片最大宽度（仅适用于图片）
    maxHeight?: number; // 图片最大高度（仅适用于图片）
  }
): Promise<any> {
  // 如果是头像上传，可以添加特殊处理
  if (options?.fileType === 'avatar') {
    // 验证是否为图片
    if (!file.type.startsWith('image/')) {
      throw new Error('头像必须是图片格式');
    }
    
    // 验证文件大小 (2MB)
    if (file.size > 2 * 1024 * 1024) {
      throw new Error('头像大小不能超过 2MB');
    }
  }

  const formData = new FormData();
  formData.append('file', file);

  try {
    // 使用API模块中的uploadFile方法，并传递进度回调
    const response = await apiUploadFile(formData, options?.onProgress);
    return response;
  } catch (error) {
    throw error;
  }
}